<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../resct18/react.development.js"></script>
    <script src="../resct18/react-dom.development.js"></script>
    <script src="../resct18/babel.min.js"></script>
</head>

<body>
    <div id="app"></div>
    <script type="text/babel">
        /* 
        当表单的value受state控制,则我们称为受控表单
            受控表单的三大用法
                1.表单的初始值受控 直接书写defaultValue属性
                2.表单是只读属性(设置了readOnly={true}) 直接设置value也可以的
                3.数据双向绑定:表单受value控制,然后通过绑定onChange事件,事件中获取当前表单的值修改state
        */
        class APP extends React.Component{  
            state = {
                name:'zhang',
                age:18,
                hobby:'吃'
            } 
            render(){
                const {name,age,hobby} = this.state
                return (
                    <div>
                        姓名:<input type="text" value={name} ref={c => this.nameEle=c}/>
                        <br/>
                        年龄:<input type="text" value={age} ref={c => this.ageEle=c}/>
                        <br/>
                        爱好:<input type="text" value={hobby} ref={c => this.hobbyEle=c}/>
                        <br/>
                        <button onClick={this.handle}>提交</button>
                        <br/>
                    </div>
                )
            }
            handle = ()=>{
                const name = this.nameEle.value;
                const age = this.ageEle.value;
                const hobby = this.hobbyEle.value;
                console.log(name,age,hobby);

            }
            
        }



       const root=ReactDOM.createRoot(document.getElementById('app'));
       root.render(<APP/>)

    </script>
</body>

</html>